$(document)
		.ready(
				function() {
					var row_data = [];
					var updateTimeDisplay;
					var position;
					var faq_data;
					var totalRecords;
					var page = 0;
					var updateData = {};
					var ajaxArray = [];
					var noteObj = new Note();
					$.extend($.fn.dataTableExt.oStdClasses, {
						"sSortAsc" : "header headerSortDown",
						"sSortDesc" : "header headerSortUp",
						"sSortable" : "header"
					});

					/* API method to get paging information */
					$.fn.dataTableExt.oApi.fnPagingInfo = function(oSettings) {
						return {
							"iStart" : oSettings._iDisplayStart,
							"iEnd" : oSettings.fnDisplayEnd(),
							"iLength" : oSettings._iDisplayLength,
							"iTotal" : oSettings.fnRecordsTotal(),
							"iFilteredTotal" : oSettings.fnRecordsDisplay(),
							"iPage" : Math.ceil(oSettings._iDisplayStart
									/ oSettings._iDisplayLength),
							"iTotalPages" : Math.ceil(oSettings
									.fnRecordsDisplay()
									/ oSettings._iDisplayLength)
						};
					};
					/* Bootstrap style pagination control */
					$
							.extend(
									$.fn.dataTableExt.oPagination,
									{
										"bootstrap" : {
											"fnInit" : function(oSettings,
													nPaging, fnDraw) {
												var oLang = oSettings.oLanguage.oPaginate;
												var fnClickHandler = function(e) {
													e.preventDefault();
													if (e.data.action == "next") {
														var end = oSettings
																.fnDisplayEnd();
														var paging1 = Math
																.round(end / 10);
														var existed = false;
														var i = 0;
														for (i = 0; i < ajaxArray.length; i++) {
															if (paging1 == ajaxArray[i]) {
																existed = true;
																break;
															}
														}
														;

														if (!existed
																&& (paging1 > 4)
																&& (paging1 % 5 == 0)
																&& (totalRecords > (paging1 * 10 + 1))) {
															ajaxArray[ajaxCount] = paging1;
															ajaxCount++;
															mode = $("#mode")
																	.val();
															if (mode == "search") {
																searchData.flag = paging1 * 10;
																var ajaxPipeline = util
																		.ajax(
																				type,
																				url,
																				dataType,
																				async,
																				searchData);
															} else {
																var ajaxData1 = {};
																ajaxData1.action = "GET_NOTE";
																ajaxData1.siteKey = $(
																		"#site")
																		.attr(
																				"key");
																ajaxData1.flag = paging1 * 10;
																var ajaxPipeline = util
																		.ajax(
																				type,
																				url,
																				dataType,
																				async,
																				ajaxData1);
															}

															ajaxPipeline
																	.done(function(
																			resp) {
																		totalRecords = resp.all;
																		$(
																				"#total_record_faq")
																				.text(
																						totalRecords);
																		$(
																				'#example')
																				.dataTable()
																				.fnSettings().oLanguage.sInfo = "表示 _START_-_END_の<span id='total_record_faq'>"
																				+ totalRecords
																				+ "</span>レコード";
																		$(
																				'#example')
																				.dataTable()
																				.fnAddData(
																						resp.aaData,
																						false);

																	});
															ajaxPipeline
																	.fail(function(
																			error) {
																		alert("エラー。再びロードしてください");
																	});
														} else {
															if ((totalRecords > (paging1 * 10 + 1)))
																count++;
														}
													}

													if (oSettings.oApi
															._fnPageChange(
																	oSettings,
																	e.data.action)) {
														fnDraw(oSettings);
													}

												};

												$(nPaging)
														.addClass('pagination')
														.append(
																'<ul>'
																		+ '<li class="prev disabled"><a href="#">&larr; '
																		+ oLang.sPrevious
																		+ '</a></li>'
																		+ '<li class="next disabled"><a href="#">'
																		+ oLang.sNext
																		+ ' &rarr; </a></li>'
																		+ '</ul>');
												var els = $('a', nPaging);
												$(els[0]).bind('click.DT', {
													action : "previous"
												}, fnClickHandler);
												$(els[1]).bind('click.DT', {
													action : "next"
												}, fnClickHandler);
											},

											"fnUpdate" : function(oSettings,
													fnDraw) {
												var iListLength = 5;
												var oPaging = oSettings.oInstance
														.fnPagingInfo();
												var an = oSettings.aanFeatures.p;
												var i, j, sClass, iStart, iEnd, iHalf = Math
														.floor(iListLength / 2);

												if (oPaging.iTotalPages < iListLength) {
													iStart = 1;
													iEnd = oPaging.iTotalPages;
												} else if (oPaging.iPage <= iHalf) {
													iStart = 1;
													iEnd = iListLength;
												} else if (oPaging.iPage >= (oPaging.iTotalPages - iHalf)) {
													iStart = oPaging.iTotalPages
															- iListLength + 1;
													iEnd = oPaging.iTotalPages;
												} else {
													iStart = oPaging.iPage
															- iHalf + 1;
													iEnd = iStart + iListLength
															- 1;
												}
												for (i = 0, iLen = an.length; i < iLen; i++) {
													// Remove the middle
													// elements
													$('li:gt(0)', an[i])
															.filter(
																	':not(:last)')
															.remove();

													// Add the new list items
													// and their event handlers
													for (j = iStart; j <= iEnd; j++) {
														sClass = (j == oPaging.iPage + 1) ? 'class="active"'
																: '';
														$(
																'<li '
																		+ sClass
																		+ '><a href="#">'
																		+ j
																		+ '</a></li>')
																.insertBefore(
																		$(
																				'li:last',
																				an[i])[0])
																.bind(
																		'click',
																		function(
																				e) {
																			e
																					.preventDefault();
																			oSettings._iDisplayStart = (parseInt(
																					$(
																							'a',
																							this)
																							.text(),
																					10) - 1)
																					* oPaging.iLength;
																			var paging = (parseInt(
																					$(
																							'a',
																							this)
																							.text(),
																					10) - 1);
																			end = oSettings
																					.fnDisplayEnd();
																			paging1 = Math
																					.round(end / 10);
																			if ((paging1 > 4)
																					&& (paging1 % 5 == 0)
																					&& (totalRecords > (paging1 * 10 + 1))) {
																				var existed = false;
																				var i = 0;
																				for (i = 0; i < ajaxArray.length; i++) {
																					if (ajaxArray[i] == paging1) {
																						existed = true;
																						break;
																					}
																				}
																				;
																				if (!existed) {
																					var ajaxData1 = {};
																					ajaxArray[ajaxCount] = paging1;
																					ajaxCount++;
																					mode = $(
																							"#mode")
																							.val();
																					if (mode == "search") {
																						searchData.flag = paging1 * 10;
																						var ajaxPipeline = util
																								.ajax(
																										type,
																										url,
																										dataType,
																										async,
																										searchData);
																					} else {
																						var ajaxData1 = {};
																						ajaxData1.action = "GET_TASK";
																						ajaxData1.siteKey = $(
																								"#site")
																								.attr(
																										"key");
																						ajaxData1.flag = paging1 * 10;
																						var ajaxPipeline = util
																								.ajax(
																										type,
																										url,
																										dataType,
																										async,
																										ajaxData1);
																					}
																					ajaxPipeline
																							.done(function(
																									resp) {
																								totalRecords = resp.all;
																								$(
																										"#total_record_faq")
																										.text(
																												totalRecords);
																								$(
																										'#example')
																										.dataTable()
																										.fnAddData(
																												resp.aaData,
																												false);
																								$(
																										'#example')
																										.dataTable()
																										.fnSettings().oLanguage.sInfo = "表示 _START_-_END_の<span id='total_record_faq'>"
																										+ totalRecords
																										+ "</span>レコード";
																							});
																					ajaxPipeline
																							.fail(function(
																									error) {
																								alert("エラー。再びロードしてください");
																							});

																				}

																			}
																			fnDraw(oSettings);
																		});
													}

													if (oPaging.iPage === 0) {
														$('li:first', an[i])
																.addClass(
																		'disabled');
													} else {
														$('li:first', an[i])
																.removeClass(
																		'disabled');
													}

													if (oPaging.iPage === oPaging.iTotalPages - 1
															|| oPaging.iTotalPages === 0) {
														$('li:last', an[i])
																.addClass(
																		'disabled');
													} else {
														$('li:last', an[i])
																.removeClass(
																		'disabled');
													}

												}

											}
										}
									});

					var url = "/administration/List", type = "POST", dataType = "json", action = "GET_NOTE";
					$(".load-ajax-ef").show();
					noteObj.sendData(url, type, dataType, action, noteObj.data);
					$(".load-ajax-ef").hide();

				});